The present invention relates to electronic controls for motors and, in particular, to a motor controller providing correction of position feedback signals derived from incremental encoders.
Electronic motor controls regulate the electrical power to a motor to control the motor's position and velocity or other dynamic characteristics including torque, acceleration, and power efficiency. Typically, a command signal from a user, for example, a desired motor position, is received by control logic in the motor controller which compares this command signal to a corresponding feedback signal (actual motor position) to develop an error signal. The error signal may be further processed and then used to synthesize a high-power drive signal via solid-state semiconductor devices such as MOSFET transistors. These drive signals are applied to the motor windings to move the motor to reduce the error signal, in this example, to bring the motor to the position of the command signal.
The feedback signal may be produced by a position encoder attached directly to the motor or indirectly to the motor through intervening rotating machinery. As is understood in the art, the position encoder may be an absolute encoder, for example, generating a unique code (e.g., a Gray code) defining an absolute position of the rotor within a single revolution or multiple revolutions of the motor rotor. Alternatively the position encoder may be an incremental encoder (e.g., providing a pair of quadrature phased sine or square waves) defining a direction and magnitude of change of motor position but not absolute motor position. The signal from an incremental encoder may be converted to a “synthesized” absolute position signal by summing or integrating the increments of motion to a known starting or reference position.
Motor controllers may be used to control DC brushless motors. Such motors typically have a permanent magnet rotor and use a set of commutation switches connected with the rotor to detect the rotor position to switch the stator winding fields in the same manner as would be done by brushes on a standard brush type DC motor. Unlike brushes, however, the commutation switches in brushless DC motors employ non-contacting rotor position sensors, such as Hall-effect sensors, to eliminate the wear, sparking, and friction accompanying the use of brushes. For practical reasons, the circuitry of the motor controller is normally also used to provide a switching of power to the stator windings based on the signal from the commutation switches.
A typical Hall-effect commutation switch will provide multiple switch outputs that may be logically combined to determine a coarse static position of the rotor, for example, within about ±30°. This static position is sufficiently accurate to ensure that the stator currents produce the desired direction of rotor motion at startup. Once the rotor is moving, the transition “edges” of the switch outputs are used to provide a more precise indication of a dynamic rotor position.
When the motor controller employs an incremental encoder, the incremental signal may drive a “commutation counter”, initialized by the commutation switches, then used in lieu of the commutation switches for precise commutation control. The incremental signal may also be used to create a synthesized absolute position signal for feedback control by initializing an accumulating counter (for example, using the commutation switches) and then updating the accumulating counter with the incremental signal.
Motor controller systems employing incremental encoders providing synthesized absolute position offer some advantages over motor controller systems employing absolute encoders. As a general matter, incremental encoders provide equivalent accuracy at lower cost and, as mentioned, can transfer data at higher rates. Nevertheless incremental encoders are subject to errors caused by electrical noise that may mask or simulate an incremental “count”. Because of the accumulation or summation process used to convert the incremental encoder signal to a synthesized absolute signal, such errors can accumulate over time to fundamentally affect the accuracy of the control system.
It is known in the art to use noise suppression or detection circuitry to monitor the signal from an incremental encoder in an attempt to neutralize or detect noise induced errors. Such techniques are not always effective particularly for high-speed encoders where noise characteristics are very similar to the characteristics of the incremental encoder signal itself.